import router from "./router";
import store from "./store";

import NProgress from "nprogress"; // 进度条
import "nprogress/nprogress.css"; //
import nProgress from "nprogress";

// 路由白名单
let whiteList = ["/login", "/404"];
// 路由导航守卫
router.beforeEach(async (to, form, next) => {
  // 进度条
  NProgress.start();

  if (store.getters.token) {
    // 登录过
    // 是否点击的登录页
    if (to.path === "/login") {
      next("/"); //直接跳转到首页
    } else {
      if (!store.getters.userId) {
        let res = await store.dispatch("user/getUserInfo");
        // console.log(res);
        let routes = await store.dispatch(
          "permission/getAsyncRoles",
          res.roles.menus
        );
        console.log(store.getters.userInfo);
        router.addRoutes(routes);
        next(to.path);
      }
      next(); //不是点击的登录页 就正常跳转
    }
  } else {
    // 路由白名单 解决无限递归
    // 如果没有token
    if (whiteList.includes(to.path)) {
      // 如果找到了表示在白名单里面
      next();
    } else {
      next("/login"); //没有登录 跳转到登录页
    }
  }
  NProgress.done(); // 手动强制关闭一次  为了解决 手动切换地址时  进度条的不关闭的问题
});

router.afterEach(() => {
  nProgress.done(); //结束进度条
});
